🌿 브랜치 관리 μ „λž΅ (Branch Management Guide)

NOTE

브랜치 넀이밍 체계, μž‘μ—… 흐름, MR μž‘μ„± κ°€μ΄λ“œλ₯Ό μ •λ¦¬ν•œ Git 브랜치 μ „λž΅ λ¬Έμ„œ.

λ³Έ ν”„λ‘œμ νŠΈμ˜ 효율적인 ν˜‘μ—…κ³Ό μ½”λ“œ ν’ˆμ§ˆ 관리λ₯Ό μœ„ν•΄ μ•„λž˜μ˜ 브랜치 μ „λž΅μ„ μ€€μˆ˜ν•©λ‹ˆλ‹€.


πŸ“Œ κ°€μ΄λ“œ λ‚΄μš©

1. 브랜치 체계 (Naming Convention)

λΈŒλžœμΉ˜λŠ” λͺ©μ μ— 따라 μ„Έ κ°€μ§€ κ³„μΈ΅μœΌλ‘œ κ΅¬λΆ„ν•˜μ—¬ μš΄μ˜ν•©λ‹ˆλ‹€.

λΆ„λ₯˜λΈŒλžœμΉ˜ ν˜•μ‹μ„€λͺ…
운영 브랜치mainμ΅œμ’… 배포용 μ΅œμƒμœ„ 브랜치 (직접 Push λΆˆκ°€)
ν”„λ‘œμ νŠΈ μž‘μ—…[ν”„λ‘œμ νŠΈλͺ…]/mainν”„λ‘œμ νŠΈλ³„ κΈ°μ€€ 브랜치 (mainμ—μ„œ νŒŒμƒ)
ν”„λ‘œμ νŠΈ 개발[ν”„λ‘œμ νŠΈλͺ…]/feature/[μž‘μ—…λͺ…]κΈ°λŠ₯ 개발, 버그 μˆ˜μ • λ“± 일반 μž‘μ—… ([ν”„λ‘œμ νŠΈλͺ…]/main νŒŒμƒ)
SI λ¦¬νŒ©ν† λ§feature/[μž‘μ—…λͺ…]SI λ¦¬νŒ©ν† λ§ μ „μš© 독립 μž‘μ—… 브랜치

2. μž‘μ—… 흐름 (Workflow)

2.1 브랜치 생성 κ·œμΉ™

μƒˆλ‘œμš΄ μž‘μ—…μ„ μ‹œμž‘ν•  λ•ŒλŠ” μ•„λž˜μ˜ λͺ…λͺ… κ·œμΉ™μ„ μ€€μˆ˜ν•˜μ—¬ μƒμ„±ν•©λ‹ˆλ‹€.

ν˜•μ‹: [prefix]-[μž‘μ—…λ‚΄μš©]_[μž‘μ—…μž]_[λ‚ μ§œ]

  • 일반 μž‘μ—… μ˜ˆμ‹œ: git checkout -b project-a/feature/add-bank_dev01_260219
  • SI λ¦¬νŒ©ν† λ§ μ˜ˆμ‹œ: git checkout -b feature/perf-transInfo_dev01_260219

[ Prefix ν™œμš© κ°€μ΄λ“œ ]

Prefixμ„€λͺ…
addμƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€
fix버그 및 였λ₯˜ μˆ˜μ •
refactorμ½”λ“œ ꡬ쑰 κ°œμ„  (κΈ°λŠ₯ λ³€ν™” μ—†μŒ)
perf쿼리 νŠœλ‹ 및 μ„±λŠ₯ μ΅œμ ν™”
remove파일 및 μ½”λ“œ μ‚­μ œ

2.2 μ½”λ“œ 반영 및 λ¨Έμ§€ (Merge)

  • main 직접 Push κΈˆμ§€: λͺ¨λ“  μ½”λ“œλŠ” **Merge Request(MR)**λ₯Ό ν†΅ν•΄μ„œλ§Œ λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ΅œμ‹  μƒνƒœ μœ μ§€: 브랜치 생성 μ „ 항상 μƒμœ„ λΈŒλžœμΉ˜μ—μ„œ pull을 λ°›μ•„ μ΅œμ‹  μƒνƒœλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.

2.3 브랜치 관리 μˆ˜μΉ™

  1. κΈ°λŠ₯ λ‹¨μœ„ 생성: ν•˜λ‚˜μ˜ λΈŒλžœμΉ˜μ—μ„œλŠ” ν•˜λ‚˜μ˜ κΈ°λŠ₯(λ˜λŠ” 이슈)만 μ²˜λ¦¬ν•˜λŠ” 것을 μ›μΉ™μœΌλ‘œ ν•©λ‹ˆλ‹€.
  2. λ‹¨μœ„ 컀밋: ν†΅ν•©ν…ŒμŠ€νŠΈ μˆ˜μ • λ“± μž‘μ€ λ²”μœ„μ˜ μž‘μ—… μ‹œμ—λŠ” fix-test λ“±μœΌλ‘œ λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜μ—¬ μ»€λ°‹ν•©λ‹ˆλ‹€.
  3. 반영 ν›„ μ¦‰μ‹œ μ‚­μ œ: MR이 μ™„λ£Œλœ λΈŒλžœμΉ˜λŠ” μ¦‰μ‹œ μ‚­μ œν•©λ‹ˆλ‹€. (λ―Έμ‚­μ œ μ‹œ 3κ°œμ›” μ£ΌκΈ° μ •κΈ° μ‚­μ œ)

3. Merge Request μž‘μ„± κ°€μ΄λ“œ

λͺ¨λ“  MR은 νŒ€μ› κ°„μ˜ μ›ν™œν•œ 리뷰λ₯Ό μœ„ν•΄ μ•„λž˜ 양식을 μ€€μˆ˜ν•˜μ—¬ μž‘μ„±ν•΄ μ£Όμ„Έμš”.

3.1 μ£Όμš” μž‘μ„± ν•­λͺ©

  1. μž‘μ—… λ°°κ²½: μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ²Œ 된 μ΄μœ λ‚˜ 기획 μ˜λ„ (예: 쿼리 속도 κ°œμ„ , SI μš”μ²­ 반영 λ“±)
  2. μ£Όμš” λ³€κ²½ 사항: μ½”λ“œ μˆ˜μ€€μ—μ„œμ˜ μˆ˜μ • 핡심 λ‚΄μ—­ μš”μ•½ (예: 인덱슀 μΆ”κ°€, 쑰인 방식 λ³€κ²½ λ“±)
  3. ν…ŒμŠ€νŠΈ κ²°κ³Ό: 정상 μž‘λ™ 확인 κ²°κ³Ό (예: ./gradlew build 성곡 μ—¬λΆ€, κ²°κ³Ό μŠ€ν¬λ¦°μƒ· λ“±)
  4. κ΄€λ ¨ 이슈: μ—°κ΄€λœ 이슈 번호 (예: #123)

3.2 λ¨Έμ§€ μ˜΅μ…˜ (Merge Options) μ„€μ •

MR 생성 ν™”λ©΄ ν•˜λ‹¨μ—μ„œ μ•„λž˜ μ˜΅μ…˜μ„ 확인해 μ£Όμ„Έμš”.

μ˜΅μ…˜ (Options)μ„€λͺ…ν•„μˆ˜ μ—¬λΆ€
Squash commitsβ€¦μ—¬λŸ¬ 개의 컀밋을 ν•˜λ‚˜μ˜ κΉ”λ”ν•œ μ»€λ°‹μœΌλ‘œ ν•©μ³μ„œ λ¨Έμ§€ν•©λ‹ˆλ‹€.βœ… ν•„μˆ˜
Delete source branch…머지 μ™„λ£Œ ν›„ μž‘μ—… 브랜치λ₯Ό 원격 μ €μž₯μ†Œμ—μ„œ μžλ™ μ‚­μ œν•©λ‹ˆλ‹€.⚠️ ꢌμž₯

πŸ’‘ μž‘μ„± 팁 및 μ£Όμ˜μ‚¬ν•­

  • 쿼리 νŠœλ‹ μ‹œ: μ„±λŠ₯ κ°œμ„  수치(2.0s -> 0.2s)λ‚˜ μ‹€ν–‰ κ³„νš(Explain Plan) 비ꡐ κ²°κ³Όλ₯Ό 첨뢀해 μ£Όμ„Έμš”.
  • 컀밋 관리: Squash λ¨Έμ§€ μ‹œ, μ΅œμ’… 컀밋 λ©”μ‹œμ§€λŠ” feat: [결제] PG사 연동과 같이 λͺ…ν™•ν•œ 제λͺ©μœΌλ‘œ μˆ˜μ • λ°”λžλ‹ˆλ‹€.
  • μž‘μ—… μ΅œμ†Œν™”: 리뷰 νš¨μœ¨μ„ μœ„ν•΄ μž‘μ—… λ‹¨μœ„λŠ” 가급적 μž‘κ²Œ μœ μ§€ν•©λ‹ˆλ‹€.

κ΄€λ ¨ λ¬Έμ„œ